2022 Method
Changes 2
M

Floor.Create

Description:
Creates a new instance of floor within the project.
Remarks:
To validate curve loop profile use BoundaryValidation. To get default floor type use GetDefaultFloorType(Document, Boolean).
Overloads (2):
Create(Document,IList[CurveLoop],ElementId,ElementId,Boolean,Line,Double)
public static Floor Create(
	Document document,
	IList<CurveLoop> profile,
	ElementId floorTypeId,
	ElementId levelId,
	bool isStructural,
	Line slopeArrow,
	double slope
)
  • document
    The document in which the new floor is created.
  • IList<CurveLoop>
    profile
    An array of planar curve loops that represent the profile of the floor.
  • floorTypeId
    Id of the floor type to be used by the new Floor.
  • levelId
    Id of the level on which the floor is to be placed.
  • Boolean
    isStructural
    True if new floor should be structural, false if architectural.
  • slopeArrow
    A line used to control the slope angle of the Floor. It must be horizontal. If slopeArrow is nulla null reference (Nothing in Visual Basic), the horizontal floor will be created.
  • Double
    slope
    The slope angle. If slopeArrow is nulla null reference (Nothing in Visual Basic), this parameter will be ignored.
Return Value Floor If successful a new floor object within the project.
Floor CreateFloor(UIApplication application, Level level)
{
      // Get the Revit document
      Autodesk.Revit.DB.Document document = application.ActiveUIDocument.Document;

      // Get a floor type for floor creation
      FilteredElementCollector collector = new FilteredElementCollector(document);
      collector.OfClass(typeof(FloorType));
      FloorType floorType = collector.FirstElement() as FloorType;

      // Build a floor profile for the floor creation
      XYZ first = new XYZ(0, 0, 0);
      XYZ second = new XYZ(20, 0, 0);
      XYZ third = new XYZ(20, 15, 0);
      XYZ fourth = new XYZ(0, 15, 0);
      CurveLoop profile = new CurveLoop();
      profile.Append(Line.CreateBound(first, second));
      profile.Append(Line.CreateBound(second, third));
      profile.Append(Line.CreateBound(third, fourth));
      profile.Append(Line.CreateBound(fourth, first));

      return Floor.Create(document, new List<CurveLoop> { profile }, floorType.Id, level.Id, true, null, 0.0);
}